package com.zenithmind.news.pojo.dto;

import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Size;
import lombok.Data;

import java.util.List;

/**
 * 创建新闻DTO
 * 
 * @author ZenithMind Team
 * @since 2025-01-09
 */
@Data
@Schema(description = "创建新闻DTO")
public class NewsCreateDTO {

    /**
     * 新闻标题
     */
    @NotBlank(message = "新闻标题不能为空")
    @Size(min = 1, max = 200, message = "新闻标题长度必须在1-200之间")
    @Schema(description = "新闻标题", example = "科技创新引领未来发展")
    private String title;

    /**
     * 新闻摘要
     */
    @Size(max = 500, message = "新闻摘要长度不能超过500")
    @Schema(description = "新闻摘要", example = "本文介绍了最新的科技创新趋势...")
    private String summary;

    /**
     * 新闻内容
     */
    @NotBlank(message = "新闻内容不能为空")
    @Schema(description = "新闻内容")
    private String content;

    /**
     * 新闻来源
     */
    @Schema(description = "新闻来源", example = "ZenithMind")
    private String source;

    /**
     * 新闻来源URL
     */
    @Schema(description = "新闻来源URL", example = "https://example.com/news/123")
    private String sourceUrl;

    /**
     * 作者
     */
    @Schema(description = "作者", example = "张三")
    private String author;

    /**
     * 分类ID
     */
    @NotBlank(message = "分类ID不能为空")
    @Schema(description = "分类ID", example = "1234567890")
    private String categoryId;

    /**
     * 标签列表
     */
    @Schema(description = "标签列表", example = "[\"科技\", \"创新\", \"AI\"]")
    private List<String> tags;

    /**
     * 关键词列表
     */
    @Schema(description = "关键词列表", example = "[\"人工智能\", \"机器学习\"]")
    private List<String> keywords;

    /**
     * 封面图片URL
     */
    @Schema(description = "封面图片URL", example = "https://example.com/images/cover.jpg")
    private String coverImage;

    /**
     * 图片列表
     */
    @Schema(description = "图片列表")
    private List<String> images;

    /**
     * 新闻类型（1-原创，2-转载，3-爬虫）
     */
    @NotNull(message = "新闻类型不能为空")
    @Schema(description = "新闻类型（1-原创，2-转载，3-爬虫）", example = "1")
    private Integer type;

    /**
     * 优先级（1-低，2-中，3-高，4-紧急）
     */
    @Schema(description = "优先级（1-低，2-中，3-高，4-紧急）", example = "2")
    private Integer priority = 2;

    /**
     * 是否置顶（0-否，1-是）
     */
    @Schema(description = "是否置顶（0-否，1-是）", example = "0")
    private Integer isTop = 0;

    /**
     * 是否推荐（0-否，1-是）
     */
    @Schema(description = "是否推荐（0-否，1-是）", example = "0")
    private Integer isRecommend = 0;

    /**
     * 是否立即发布（0-保存草稿，1-立即发布）
     */
    @Schema(description = "是否立即发布（0-保存草稿，1-立即发布）", example = "1")
    private Integer publishNow = 1;

    /**
     * 排序值
     */
    @Schema(description = "排序值", example = "0")
    private Integer sortOrder = 0;
}
